Events · Webhooks · Flows
Every booking,
an event your
flows can catch.
wecrew emits signed webhooks for everything that moves. Point them at your own n8n and the rest is drag-and-drop: reassign a crew, chase an advance, push the job into Tally, escalate a bad rating to a human — no glue code, no cron jobs.
● n8n.admin.wecrew.in · self-hosted
·HMAC-signed·At-least-once delivery
POST n8n.admin.wecrew.in/webhook/wecrew
# Headers
X-Wecrew-Event: booking.confirmed
X-Wecrew-Signature: sha256=8f3c…
# Body
{
"event": "booking.confirmed",
"account_id": "acc_9f21",
"sent_at": "2026-08-01T09:14:02Z",
"data": {
"id": "BK-24193",
"service": "painting",
"customer": "R. Iyer",
"pincode": "600042",
"value": 41600,
"status": "queued",
"slot": "2026-08-06T09:30:00+05:30"
}
}
# The booking row travels under "data" — read $json.data.id
# Answer 2xx within 6s; we try 3 times, then log and drop
200 · Assign crew → notify → 4 nodes · 340ms
›
Event types
15
bookings, crews, jobs, payments, workspace
Median delivery
240ms
emit to your webhook, same region
Delivery attempts
3
0.5s · 2s · 6s backoff, then logged
Ops work removed
−14h
per week of manual coordinator chasing
Section 01 — Flows worth stealing
Five flows,
four live today.
These are the ones every wecrew operator ends up building. All five fire from the shipped API today — the advance-chase runs off a sweeper, so its nudges arrive on time without a booking touching the API. Import the JSON into n8n.admin.wecrew.in, set your credentials, switch it on.
01 — booking.confirmed
Auto-assign the nearest free crew
The webhook arrives with pincode, crew size and duration. The flow queries your roster for painters free across all four days, ranks them by travel distance and rating, writes the assignment back through the wecrew API, and WhatsApps the crew lead their job sheet. Unassigned after 15 minutes, it pages the coordinator instead of failing silently.
$ Webhook → Postgres → Sort → HTTP → WhatsApp
8 nodesassignment in under a minute
02 — advance.pending
Chase the advance, politely
Three nudges on a schedule the API keeps — 2 hours, next morning, 24 hours before start — each carrying the live UPI link. Paid at any point, the row settles and the remaining nudges never fire.
$ Webhook → Switch on nudge → WhatsApp
+19%advances recovered
03 — rating.received
Escalate 3-stars fast
Two stars or below opens a ticket with a severity and an SLA clock — four hours for damage, twelve for a refund — posts the transcript into the ops channel, and pauses that crew's auto-assignment until a human clears it.
$ Switch → Slack → Freshdesk
6 minmedian time to first human reply
04 — job.completed
Invoice, books, payout
Raises the GST invoice, files the entry into Tally or Zoho, and queues the crew payout for the Friday batch — one transfer per crew, not per job, with the handover photos attached.
$ HTTP → Zoho Books → Sheets
0invoices typed by hand
05 — chat.escalated
Hand to a human
When the assistant hits a structural crack, a price past your ceiling, or an angry customer, it routes to the on-call coordinator with the full transcript.
$ Webhook → Schedule lookup → Call
100%escalations reach a named person
Section 02 — The event catalogue
Subscribe to
what you need.
Pick events per endpoint — one flow for ops, another for finance, a third for the partner app. Every payload carries an idempotency key, so a retried delivery never double-books a crew or double-pays a painter.
VerifyHMAC-SHA256 over the raw body with your signing secret
ReplayAny delivery, re-sent from the dashboard for 30 days
FilterBy vertical, city or value — so finance never sees chat noise
# wecrew · outbound webhooks
endpoints:
- name: ops
url: https://n8n.admin.wecrew.in/webhook/wecrew-ops
secret: $WECREW_HOOK_SECRET
events:
- booking.created
- booking.updated
- booking.confirmed
- booking.rescheduled
- booking.cancelled
- crew.assigned
- job.started
- job.completed
- conversation.created
- invoice.created
- team.invited
- crew.no_show # slot + 15 min, time-driven
- name: finance
url: https://n8n.admin.wecrew.in/webhook/wecrew-fin
events:
- payment.captured
- payment.failed
- advance.pending # nudge 1–3, time-driven
- milestone.due # 20/40/40 staged billing
- payout.queued # one run per crew, not per job
filter:
min_value: 5000
- name: quality
url: https://n8n.admin.wecrew.in/webhook/wecrew-qa
events:
- rating.received
- chat.escalated
- complaint.opened # severity + SLA clock
delivery:
timeout_s: 6
retries: 3 # 0.5s · 2s · 6s backoff
signature: hmac_sha256 # X-Wecrew-Signature, over the raw body
# At-most-once: a 4xx stops immediately, a final failure is
# logged and dropped. Anything that must not be lost lives
# in the database, not in a webhook.
inbound:
# n8n calls back into wecrew to write the assignment
api: https://api.wecrew.in/api
auth: bearer # scoped machine key, wck_live_…
scopes:
- bookings:write
- quality:read # read-only families end in :read
Section 03 — Wiring it up
Four steps, one afternoon.
Against your own n8n at n8n.admin.wecrew.in — nothing leaves your infrastructure.
01
Create the webhook node
Add a Webhook trigger in n8n, set the path, copy the production URL. Keep it POST and raw-body so the signature still validates.
02
Register the endpoint
Paste the URL into Settings → Automations, tick the events you want, and store the signing secret n8n will verify against.
03
Send a test event
Fire a sample booking.confirmed from the dashboard, watch it land in the n8n execution log, and build the rest of the flow off the real shape.
04
Call back with the API key
Scope a key to the actions the flow performs — assigning crews, queueing payouts — and nothing more. Rotate it from the dashboard without touching n8n.